0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 InliningProof (UPPER BOUND(ID), 45 ms)
↳12 CpxRNTS
↳13 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 97 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 57 ms)
↳20 CpxRNTS
↳21 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 481 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 100 ms)
↳26 CpxRNTS
↳27 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳28 CpxRNTS
↳29 IntTrsBoundProof (UPPER BOUND(ID), 881 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 54 ms)
↳32 CpxRNTS
↳33 FinalProof (⇔, 0 ms)
↳34 BOUNDS(1, n^1)
prime(0) → false
prime(s(0)) → false
prime(s(s(x))) → prime1(s(s(x)), s(x))
prime1(x, 0) → false
prime1(x, s(0)) → true
prime1(x, s(s(y))) → and(not(divp(s(s(y)), x)), prime1(x, s(y)))
divp(x, y) → =(rem(x, y), 0)
prime(0) → false [1]
prime(s(0)) → false [1]
prime(s(s(x))) → prime1(s(s(x)), s(x)) [1]
prime1(x, 0) → false [1]
prime1(x, s(0)) → true [1]
prime1(x, s(s(y))) → and(not(divp(s(s(y)), x)), prime1(x, s(y))) [1]
divp(x, y) → =(rem(x, y), 0) [1]
prime(0) → false [1]
prime(s(0)) → false [1]
prime(s(s(x))) → prime1(s(s(x)), s(x)) [1]
prime1(x, 0) → false [1]
prime1(x, s(0)) → true [1]
prime1(x, s(s(y))) → and(not(divp(s(s(y)), x)), prime1(x, s(y))) [1]
divp(x, y) → =(rem(x, y), 0) [1]
prime :: 0:s → false:true:and 0 :: 0:s false :: false:true:and s :: 0:s → 0:s prime1 :: 0:s → 0:s → false:true:and true :: false:true:and and :: not → false:true:and → false:true:and not :: = → not divp :: 0:s → 0:s → = = :: rem → 0:s → = rem :: 0:s → 0:s → rem |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
prime
prime1
divp
const, const1, const2
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
0 => 0
false => 0
true => 1
const => 0
const1 => 0
const2 => 0
divp(z, z') -{ 1 }→ 1 + (1 + x + y) + 0 :|: x >= 0, y >= 0, z = x, z' = y
prime(z) -{ 1 }→ prime1(1 + (1 + x), 1 + x) :|: x >= 0, z = 1 + (1 + x)
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: x >= 0, z' = 1 + 0, z = x
prime1(z, z') -{ 1 }→ 0 :|: x >= 0, z = x, z' = 0
prime1(z, z') -{ 1 }→ 1 + (1 + divp(1 + (1 + y), x)) + prime1(x, 1 + y) :|: z' = 1 + (1 + y), x >= 0, y >= 0, z = x
divp(z, z') -{ 1 }→ 1 + (1 + x + y) + 0 :|: x >= 0, y >= 0, z = x, z' = y
divp(z, z') -{ 1 }→ 1 + (1 + x + y) + 0 :|: x >= 0, y >= 0, z = x, z' = y
prime(z) -{ 1 }→ prime1(1 + (1 + x), 1 + x) :|: x >= 0, z = 1 + (1 + x)
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: x >= 0, z' = 1 + 0, z = x
prime1(z, z') -{ 1 }→ 0 :|: x >= 0, z = x, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + y') + 0)) + prime1(x, 1 + y) :|: z' = 1 + (1 + y), x >= 0, y >= 0, z = x, x' >= 0, y' >= 0, 1 + (1 + y) = x', x = y'
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
{ divp } { prime1 } { prime } |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: ?, size: O(n1) [2 + z + z'] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] prime1: runtime: ?, size: O(n2) [1 + z·z' + 4·z' + z'2] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 }→ prime1(1 + (1 + (z - 2)), 1 + (z - 2)) :|: z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + prime1(z, 1 + (z' - 2)) :|: z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] prime1: runtime: O(n1) [2 + 2·z'], size: O(n2) [1 + z·z' + 4·z' + z'2] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 + 2·z }→ s :|: s >= 0, s <= 1 * ((1 + (z - 2)) * (1 + (z - 2))) + 1 * ((1 + (z - 2)) * (1 + (1 + (z - 2)))) + 4 * (1 + (z - 2)) + 1, z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 + 2·z' }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + s' :|: s' >= 0, s' <= 1 * ((1 + (z' - 2)) * (1 + (z' - 2))) + 1 * ((1 + (z' - 2)) * z) + 4 * (1 + (z' - 2)) + 1, z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] prime1: runtime: O(n1) [2 + 2·z'], size: O(n2) [1 + z·z' + 4·z' + z'2] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 + 2·z }→ s :|: s >= 0, s <= 1 * ((1 + (z - 2)) * (1 + (z - 2))) + 1 * ((1 + (z - 2)) * (1 + (1 + (z - 2)))) + 4 * (1 + (z - 2)) + 1, z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 + 2·z' }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + s' :|: s' >= 0, s' <= 1 * ((1 + (z' - 2)) * (1 + (z' - 2))) + 1 * ((1 + (z' - 2)) * z) + 4 * (1 + (z' - 2)) + 1, z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] prime1: runtime: O(n1) [2 + 2·z'], size: O(n2) [1 + z·z' + 4·z' + z'2] prime: runtime: ?, size: O(n2) [2 + z + 2·z2] |
divp(z, z') -{ 1 }→ 1 + (1 + z + z') + 0 :|: z >= 0, z' >= 0
prime(z) -{ 1 + 2·z }→ s :|: s >= 0, s <= 1 * ((1 + (z - 2)) * (1 + (z - 2))) + 1 * ((1 + (z - 2)) * (1 + (1 + (z - 2)))) + 4 * (1 + (z - 2)) + 1, z - 2 >= 0
prime(z) -{ 1 }→ 0 :|: z = 0
prime(z) -{ 1 }→ 0 :|: z = 1 + 0
prime1(z, z') -{ 1 }→ 1 :|: z >= 0, z' = 1 + 0
prime1(z, z') -{ 1 }→ 0 :|: z >= 0, z' = 0
prime1(z, z') -{ 2 + 2·z' }→ 1 + (1 + (1 + (1 + x' + z) + 0)) + s' :|: s' >= 0, s' <= 1 * ((1 + (z' - 2)) * (1 + (z' - 2))) + 1 * ((1 + (z' - 2)) * z) + 4 * (1 + (z' - 2)) + 1, z >= 0, z' - 2 >= 0, x' >= 0, 1 + (1 + (z' - 2)) = x'
divp: runtime: O(1) [1], size: O(n1) [2 + z + z'] prime1: runtime: O(n1) [2 + 2·z'], size: O(n2) [1 + z·z' + 4·z' + z'2] prime: runtime: O(n1) [1 + 2·z], size: O(n2) [2 + z + 2·z2] |